package com.shangxian.giveithome.mapper;

import com.shangxian.giveithome.entity.community.Issue;
import com.shangxian.giveithome.entity.community.IssueDetails;
import com.shangxian.giveithome.entity.community.IssueList;
import com.shangxian.giveithome.entity.community.LookArticle;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface IssueMapper {

    /**
     * 根据文章id查询文章详情
     * @param id
     * @return
     */
    IssueDetails findIssueDetails(Long id );

    /**
     * 查询用户的发布文章列表
     */

    List<IssueList> findUserIssueArticleList(Long userId, int pageNumber, int pageSize);

    /**
     * 查询用户发布文章的数目
     */
    int findUserIssueArticleCount(Long userId);
    /**
     * 查询最新发布动态列表
     */
    List<IssueList> findAllIssueArticleList(@Param("pageNumber") int pageNumber, @Param("pageSize") int pageSize);

    /**
     * 查询发布文章的总数
     */
    int findAllIssueCount();

    /**
     * 查询所在合集的文章数目
     *
     */
    int findCollectionIssueCount(Long id);

    /**
     * 查询所有问答动态列表
     */
    List<IssueList> findAllQandAList(int pageNumber, int pageSize,String screenSearch);

    /**
     * 查询所有问答文章的数目
     */
    int findAllQandAArticlrCount(String screenSearch);

    /**
     * 发布动态
     */
    int issueArticle( Issue issue);

    /**
     * 浏览记录
     */
    int lookArticle(LookArticle lookArticle);

    /**
     * 查询用户是否已经浏览该文章
     */
    int findUserLookArticle(Long userId, Long issueId);

    /**
     * 查询关注用户的文章动态列表
     */
    List<IssueList> findAllAttentionUserIssueList(@Param("pageNumber") int pageNumber, @Param("pageSize") int pageSize, List<Long> userIds);

    /**
     * 查询关注用户的文章数目
     */
    int findAllAttentionUserIssueCount(List<Long> id);

    /**
     * 更新文章的浏览数目
     */
    void updateLookIssueCount(Long id);

    /**
     * 删除文章,即更新文章中的state状态，1表示已删除
     */
    int deleteArticle(Long id);

    /**
     * 根据文章id查询文章用户的id
     */
    Long findUsIdByIssueId(Long id);





}
